package Presenter;

import java.util.ArrayList;

import org.json.JSONException;
import org.json.JSONObject;

import Models.InvSalesLines;

public class InvSalesLinePresenter extends AbstractPresenter<InvSalesLines> {
	final String SINGLEITEM = "invSalesLines";
	final String MULTIITEM = "invSalesLiness";
	
	public ArrayList<InvSalesLines> tryJSONParseArray(String input){
		return super.doJSONParseArray(input, SINGLEITEM, MULTIITEM);
	}
	
	public InvSalesLines tryJSONParse(String input){
		return super.doJSONParse(input, SINGLEITEM);
	}
	
	public InvSalesLines getEmptyEntity(){
		InvSalesLines entity = new InvSalesLines();
		return entity;
	}
	
	public InvSalesLines createItemFromJSONObject(JSONObject jsonObject){
		InvSalesLines item = new InvSalesLines();
		try{
			item.setDate(timeFormat.parse(jsonObject.getString("invSaleDate")));
			item.setId(jsonObject.getInt("invSaleID"));
			item.setPriceOverRide(jsonObject.getDouble("invSalePriceOver"));
			item.setQty(jsonObject.getInt("invSaleQty"));
			item.setUnitPrice(jsonObject.getDouble("iSaleUnitPrice"));
			
			if(!jsonObject.isNull("invSaleCustID")){
				CustomerPresenter presenter = new CustomerPresenter();
				JSONObject jsonGroup = jsonObject.getJSONObject("invSaleCustID");
				item.setCustomer(presenter.createItemFromJSONObject(jsonGroup));
			} else {
				item.setCustomer(null);
			}
			if(!jsonObject.isNull("invSaleDisc")){
				DiscountCodePresenter presenter = new DiscountCodePresenter();
				JSONObject jsonGroup = jsonObject.getJSONObject("invSaleDisc");
				item.setDiscount(presenter.createItemFromJSONObject(jsonGroup));
			} else {
				item.setDiscount(null);
			}
			if(!jsonObject.isNull("invSaleSupplyID")){
				SuppliesPresenter presenter = new SuppliesPresenter();
				JSONObject jsonGroup = jsonObject.getJSONObject("invSaleSupplyID");
				item.setInventoryItem(presenter.createItemFromJSONObject(jsonGroup));
			} else {
				item.setInventoryItem(null);
			}
			
			return item;
		} catch(JSONException ex){
			ex.printStackTrace();
		} catch(Exception ex){
			ex.printStackTrace();
		}
		return null;
	}
	
	public JSONObject createJSON(InvSalesLines item){
		try{
			JSONObject json = new JSONObject();
			
			json.put("invSaleDate", getDate(item.getDate()));
			json.put("invSaleID", item.getId());
			json.put("invSalePriceOver", item.getPriceOverRide());
			json.put("invSaleQty", item.getQty());
			json.put("iSaleUnitPrice", item.getUnitPrice());
			
			if(item.getCustomer()!=null){
				CustomerPresenter presenter = new CustomerPresenter();
				json.put("invSaleCustID", presenter.createJSON(item.getCustomer()));
			} else {
				json.put("invSaleCustID", JSONObject.NULL);
			}
			if(item.getDiscount()!=null){
				DiscountCodePresenter presenter = new DiscountCodePresenter();
				json.put("invSaleDisc", presenter.createJSON(item.getDiscount()));
			} else {
				json.put("invSaleDisc", JSONObject.NULL);
			}
			if(item.getInventoryItem()!=null){
				SuppliesPresenter presenter = new SuppliesPresenter();
				json.put("invSaleSupplyID", presenter.createJSON(item.getInventoryItem()));
			} else {
				json.put("invSaleSupplyID", JSONObject.NULL);
			}
			
			return json;
		} catch(JSONException ex){
			ex.printStackTrace();
		}
		return null;
	}

}
